<?php
// 应用公共文件
use think\Db;
/**
 * 输出数据
 *
 * @param $code
 * @param $msg
 * @param array $data
 */
function AjaxReturn($code,$msg,$data=array())
{

    $returnData=array(
        "code"=>$code
    );
    if($msg)
    {
        $returnData["message"]=$msg;
    }else
    {
        $returnData["message"]='无响应';//getErrorInfo($code);
    }
    if(!empty($data))
    {
        $returnData["data"]=$data;
    }
    exit(json_encode($returnData));
}
/**
 * 记录操作信息
 * @param $type 类型1登陆2操作3错误
 * @param $style 操作人类型1管2会
 * @param $name 操作用户
 * @param $desc 操作信息
 * @return int|string
 */
function accountLog($type,$style,$name,$desc)
{
    $data = array(
        'lo_type'=>$type,
        'lo_style'=>$style,
        'lo_ip'=>\request()->ip(),
        'lo_time'=>time(),
        'lo_name'=>$name,
        'lo_desc'=>$desc,
    );
    $res = db('logs')->insert($data);
    return $res;
}
// 二维码
function verificationCode($uid)
{
    $savePath = APP_PUBLIC . '/public/qrcode/';
    $webPath = '/qrcode/';
    $request = \think\Request::instance();
    $qrData = $request->domain().'api/Login/Register/phone/'.$uid;
    $qrLevel = 'H';
    $qrSize = '8';
    $savePrefix = 'NickBai';

    if($filename = createQRcode($savePath, $qrData, $qrLevel, $qrSize, $savePrefix)){
        $pic = $webPath . $filename;
    }
    return $pic;
}
/**
 * 功能：生成二维码
 * @param string $qrData 手机扫描后要跳转的网址
 * @param string $qrLevel 默认纠错比例 分为L、M、Q、H四个等级，H代表最高纠错能力
 * @param string $qrSize 二维码图大小，1－10可选，数字越大图片尺寸越大
 * @param string $savePath 图片存储路径
 * @param string $savePrefix 图片名称前缀
 */
function createQRcode($savePath, $qrData = 'PHP QR Code :)', $qrLevel = 'L', $qrSize = 4, $savePrefix = 'qrcode')
{
    vendor('phpqrcode.phpqrcode');//引入插件类
    if (!isset($savePath)) return '';
    //设置生成png图片的路径
    $PNG_TEMP_DIR = $savePath;

    //检测并创建生成文件夹
    if (!file_exists($PNG_TEMP_DIR)) {
        mkdir($PNG_TEMP_DIR);
    }
    $filename = $PNG_TEMP_DIR . 'test.png';
    $errorCorrectionLevel = 'L';
    if (isset($qrLevel) && in_array($qrLevel, ['L', 'M', 'Q', 'H'])) {
        $errorCorrectionLevel = $qrLevel;
    }
    $matrixPointSize = 4;
    if (isset($qrSize)) {
        $matrixPointSize = min(max((int)$qrSize, 1), 10);
    }
    if (isset($qrData)) {
        if (trim($qrData) == '') {
            die('data cannot be empty!');
        }
        //生成文件名 文件路径+图片名字前缀+md5(名称)+.png
        $filename = $PNG_TEMP_DIR . $savePrefix . md5($qrData . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
        //开始生成
        \QRcode::png($qrData, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
    } else {
        //默认生成
        \QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
    }
    if (file_exists($PNG_TEMP_DIR . basename($filename)))
        return basename($filename);
    else
        return FALSE;
}
/**
2  * 获得随机字符串
6  */
function getRandomStr(){
    $num = mt_rand(888888,999999);
    $str = sha1(sha1($num));
     return $str;
 }
/**
+--------------------------------------------------------------------------
 * 实现随机生成8位数的会员ID，并且判断该ID是否存在
 * @param $type $num 数字长度
+--------------------------------------------------------------------------
 */
function rand_number($num = 8){
    //实例化相关表
    $uident = \db('user');
    $usid = '';
    for ($i=0;$i<$num;$i++){
        $usid .= mt_rand(0,9);
    }
    //判断ID不可重复
    $usre = $uident->where("us_uid",$usid)->find();
    if(!empty($usre) || strlen($usid) < 8){
        rand_number();
    }
    return $usid;
}


/**
 * 会员消息
 * @param $uid 编号
 * @param $desc 备注
 * @return int|string
 */
function accountUserLog($uid,$desc)
{
    $data['ul_uid'] = $uid;
    $data['ul_desc'] = $desc;
    $data['ul_time'] = time();
    $res = db('user_log')->insert($data);
    return $res;
}

/**
 * 记录会员资金明细
 * @param $uid
 * @param $money USDT
 * @param $desc 备注
 * @param $cleck 锁仓金
 * @param $pomoney 蔬菜积分
 * @return int|string
 */
function accountMoneyLog($uid,$money,$desc,$cleck = 0,$pomoney = 0)
{
    /* 插入帐户变动记录 */
    $acc_log = array(
        'ml_uid'   => $uid,
        'ml_points' => $money,
        'ml_points_money' => $pomoney,
        'ml_lock_cabin' => $cleck,
        'ml_desc'=> $desc,
        'ml_time' => time(),
    );
    /* 变动资金 */
    $update = db('user')->where("`us_uid`='".$uid."'")->setInc('us_points',$money);
    db('user')->where("`us_uid`='".$uid."'")->setInc('us_lock_cabin',$cleck);
    db('user')->where("`us_uid`='".$uid."'")->setInc('us_points_money',$pomoney);
    if($update){
        $res = db('money_log')->insert($acc_log);
        return $res;
    }
}
/**
 * 获取系统配置
 * @param $title
 * @return mixed
 */
function tpConfig($title)
{
    $list = db('config')->where('gc_title',$title)->value('gc_value');
    return $list;
}

/**
 * 生成随机编号
 * @return int
 */
function rand_nums()
{
    $rand = rand(11111,99999);
    $find = Db::name('code_time')->where('ct_code',$rand)->select();
    if(empty($find)){
        return $rand;
    }
    rand_nums();
}

/**
 * 众筹上级得奖励
 * @param $pid 上级id
 * @param $bili 奖励比
 * @param $money 奖励金
 * @param $nper 参与期数
 * @return int
 */
function catUp($pid,$bili,$money,$nper = 0){
    //实例化相关表
    $usident = \db('user');
    //获取系统参数
    $conf = bcdiv(tpConfig("share"),100,4);
    //查找用户上级
    $user = $usident->where(array('us_uid'=>$pid))->find();
    if(empty($user)){
        return 1;
    }
    if($bili < 1){
        $moneys = bcmul($money,$bili,4);
    }else{
        $moneys = bcmul($money,$conf,4);
    }
    $bili = $bili/2;
    accountMoneyLog($user['us_uid'],$moneys,'下级参与第'.$nper.'期众筹所得');
    catUp($user['us_pid'],$bili,$moneys,$nper);
}